As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is an Information Handling System (IHS). An IHS generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes. Because technology and information handling needs and requirements may vary between different applications, IHSs may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in IHSs allow for IHSs to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, global communications, etc. In addition, IHSs may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
An IHS typically includes one or more persistent (i.e., non-volatile) data storage devices. For many years, IHSs relied on magnetic disk storage devices for persistent storage. As solid state storage devices (SSDs) have become increasingly affordable, they are an increasingly common choice for persistent storage for use by an IHS. When compared to conventional magnetic disk storage devices, solid state storage devices typically support faster read and write operations. In addition, solid state storage devices are suitable for certain mobile device applications due to the stresses that mobile devices may place on the spinning and otherwise moving parts of magnetic disk storage devices.
A solid state storage device may be accessed by a host IHS using a bus protocol that is supported by the SSD. As solid state storage devices began to rise in popularity, SATA (Serial ATA) was a common bus protocol utilized to interface with SSDs. More recently, PCIe (Peripheral Component Interconnect Express) has emerged as an increasingly common bus protocol supported by solid state storage device. One aspect of the emerging popularity of PCIe as an SSD bus protocol is the support in PCIe for faster bus speeds when compared to connections using SATA.
A solid state storage device may utilize NVMe (Non-Volatile Memory Express) in order to communicate data with a host IHS over a high-bandwidth connection provided by a PCIe bus interface. NVMe is a logical device interface that has been designed and optimized to operate efficiently over a PCIe bus interface. When utilized in conjunction with NVMe, a PCIe bus interface provides up to six times faster transfer speeds when compared to a SATA bus interface. One aspect of NVMe support for PCIe is the use of various high-speed queues by the host IHS. These high speed queues are used by the host IHS to buffer commands to be issued to a supported SSD and to buffer communications received from the SSD in response to the processing of issued commands. The queues utilized by a PCIe NVMe bus interface connection to an SSD are typically initialized and run from a volatile memory of the host IHS.
Even though PCIe supports faster bus speeds that SATA, a PCIe bus connection may be slower to initialize than a SATA bus interface connection. When used to interface with solid state storage devices, the faster bus speeds supported by PCIe benefit overall user experience in the form of faster booting of the SSD and faster data retrieval, resulting in faster loading and operation of software applications. However, in order to support these higher bus speeds, the various queues utilized by the host IHS must be initialized. Each time an IHS is booted or restarted, both the bus connection attaching a solid state storage device and the solid state storage device itself must be initialized and the high speed queues must be initialized by the host IHS before the solid state storage device is ready for use. When initializing a PCIe-connected SSD upon booting of a host IHS, it may take in the range of 500-2000 milliseconds to complete initialization of the SSD and the PCIe connection. In comparison, initialization of a SATA connected SSD may be accomplished in the range of 100-200 milliseconds.
In order to improve overall boot speeds, certain IHSs may be configured to utilize optimized boot procedures that rely on operating system (OS) boot files that include data necessary to boot key drivers and other critical data needed to initialize basic IHS capabilities. For instance, in WINDOWs operating systems, fast startup procedures utilize an OS boot file that may be known as a “session 0” boot file. Similar to hibernation power-saving techniques utilized by certain IHSs, in fast startup procedures, certain aspects of the IHS state are captured and stored to persistent memory prior to ending an IHS session (e.g., rebooting or powering down the IHS). However, unlike the large boot files used for hibernation of an IHS, fast startup procedure typically utilize much smaller boot files that can be loaded and executed much more quickly. Upon powering an IHS supporting such fast startup procedures, the IHS retrieves the OS boot file from persistent storage and uses the retrieved data to quickly initialize core IHS functionality.